import { propTypes } from '/@/utils/propTypes';
export const vxeProps = () => ({
    rowKey: propTypes.string.def('id'),
    // 列信息
    columns: {
        type: Array,
        required: true,
    },
    // 数据源
    dataSource: {
        type: Array,
        required: true,
    },
    authPre: {
        type: String,
        required: false,
        default: '',
    },
    // 是否显示工具栏
    toolbar: propTypes.bool.def(false),
    // 工具栏配置
    toolbarConfig: propTypes.object.def(() => ({
        // prefix 前缀；suffix 后缀；
        slots: ['prefix', 'suffix'],
        // add 新增按钮；remove 删除按钮；clearSelection 清空选择按钮；collapse 展开收起
        btns: ['add', 'remove', 'clearSelection'],
    })),
    // 是否显示行号
    rowNumber: propTypes.bool.def(false),
    // 是否可选择行
    rowSelection: propTypes.bool.def(false),
    // 选择行类型
    rowSelectionType: propTypes.oneOf(['checkbox', 'radio']).def('checkbox'),
    // 是否可展开行
    rowExpand: propTypes.bool.def(false),
    // 展开行配置
    expandConfig: propTypes.object.def(() => ({})),
    // 页面是否在加载中
    loading: propTypes.bool.def(false),
    // 表格高度
    height: propTypes.oneOfType([propTypes.number, propTypes.string]).def('auto'),
    // 最大高度
    maxHeight: {
        type: Number,
        default: () => null,
    },
    // 要禁用的行
    disabledRows: propTypes.object.def(() => ({})),
    // 是否禁用全部组件
    disabled: propTypes.bool.def(false),
    // 是否可拖拽排序（有固定列的情况下无法拖拽排序，仅可上下排序）
    dragSort: propTypes.bool.def(false),
    // 排序字段保存的Key
    sortKey: propTypes.string.def('orderNum'),
    // 排序序号开始值，默认为 0
    sortBegin: propTypes.number.def(0),
    // 大小，可选值有：medium（中）、small（小）、mini（微）
    size: propTypes.oneOf(['medium', 'small', 'mini']).def('medium'),
    // 是否显示边框线
    bordered: propTypes.bool.def(false),
    // 分页器参数，设置了即可显示分页器
    pagination: propTypes.object.def(() => ({})),
    // 点击行时是否显示子表单
    clickRowShowSubForm: propTypes.bool.def(false),
    // 点击行时是否显示主表单
    clickRowShowMainForm: propTypes.bool.def(false),
    // 是否点击选中行，优先级最低
    clickSelectRow: propTypes.bool.def(false),
    // 是否开启 reload 数据效果
    reloadEffect: propTypes.bool.def(false),
    // 校验规则
    editRules: propTypes.object.def(() => ({})),
    // 是否异步删除行，如果你要实现异步删除，那么需要把这个选项开启，
    // 在remove事件里调用confirmRemove方法才会真正删除（除非删除的全是新增的行）
    asyncRemove: propTypes.bool.def(false),
    // 是否一直显示组件，如果为false则只有点击的时候才出现组件
    // 注：该参数不能动态修改；如果行、列字段多的情况下，会根据机器性能造成不同程度的卡顿。
    // TODO 新版vxe-table取消了 visible 参数，导致无法实现该功能
    alwaysEdit: propTypes.bool.def(false),
    // 联动配置，数组，详情配置见文档
    linkageConfig: propTypes.array.def(() => []),
    // 是否开启使用 webSocket 无痕刷新
    socketReload: propTypes.bool.def(false),
    // 相同的socketKey更改时会互相刷新
    socketKey: propTypes.string.def('vxe-default'),
    // 新增行时切换行的激活状态
    addSetActive: propTypes.bool.def(true),
    // 是否开启键盘编辑
    keyboardEdit: propTypes.bool.def(false),
});
export const vxeEmits = ['save', 'added', 'removed', 'inserted', 'dragged', 'selectRowChange', 'pageChange', 'valueChange'];
